package book;

import java.io.IOException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import common.DBManager;
/**
 * 【処理のみ】指定書籍の削除フラグを立て検索結果画面【P202】に遷移
 *
 * @author wakabayashi
 *
 */
public class DeleteServlet extends HttpServlet {
		Connection connection=null;
		Statement statement=null;

		@Override
		protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
		{
			req.setCharacterEncoding("UTF-8");
			resp.setContentType("text/html; charset=UTF-8");
			deleteInfo(req,resp);
		}

		@Override
		protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
		{
			req.setCharacterEncoding("UTF-8");
			resp.setContentType("text/html; charset=UTF-8");
			deleteInfo(req,resp);
		}

		protected void deleteInfo(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
		{
			String message 	= null;																			//	メッセージ
			//		削除する書籍のＩＳＢＮコードを受け取る。
			String isbn = req.getParameter("isbn");
			//		ＩＳＢＮコードが空の場合
			//		メッセージに、「書籍情報を削除できません。」をセットし、書籍検索結果に遷移する。
			if (isbn == null || isbn.length() < 1) {
				message = "書籍情報を削除できません";
			}
			else {
				//	書籍テーブルのＩＳＢＮコードが一致するレコードを全て更新する。
				//	削除フラグを「１」にする。
				try
				{
					connection=DBManager.getConnection();
					statement=connection.createStatement();

					int rental = 0;
					int reserve = 0;
					ResultSet rs = statement.executeQuery("select count(*) as cnt from books where rental_id is not null and isbn = '" + isbn + "'");
					if (rs.next()) {
						rental = rs.getInt("cnt");
					}

					rs = statement.executeQuery("select count(*) as cnt from reserves where book_isbn = '" + isbn + "'");
					if (rs.next()) {
						reserve = rs.getInt("cnt");
					}

					if (rental > 0) {
						message = "貸出中、または、予約中のため書籍情報を削除できません";
					}
					else if (reserve > 0) {
						message = "貸出中、または、予約中のため書籍情報を削除できません";
					}
					else {
						statement.executeUpdate("UPDATE books SET delete_flag = 1 WHERE isbn = '" + isbn + "'");
						message = "削除しました";
					}
				}
				catch (SQLException e)
				{
					System.out.println(e);
				}
				catch(Exception e)
				{
					System.out.println(e);
				}
				finally
				{
					if(statement!=null)
					{
						try
						{
							statement.close();
						}
						catch (SQLException e)
						{
							e.printStackTrace();
						}
					}

					if(connection!=null)
					{
						try
						{
							connection.close();
						}
						catch (SQLException e)
						{
							e.printStackTrace();
						}
					}
				}
				req.setAttribute("msg", message);
				//	書籍検索結果へ遷移する。
				RequestDispatcher requestDispather=req.getRequestDispatcher("/book/SearchServlet");
				requestDispather.forward(req, resp);
			}
		}

}
